package com.young.fs.service;

import com.young.common.util.Page;
import com.young.fs.model.FileInfo;
import com.young.fs.model.FileStatisticsOnType;

import java.util.List;
import java.util.Map;


/**
 * 文件信息服务,主要是对数据库存储的文件信息作处理
 * Created by rookie on 2017/9/5.
 */
public interface IFileInfoService {
    /**
     * 获取文件信息列表
     * @param fileInfo
     * @return
     */
    List<FileInfo> getFileInfoList(FileInfo fileInfo);

    /**
     * 查询子文件夹信息列表
     * @param folderId
     * @return
     */
    List<FileInfo> getSubFolderList(String folderId);

    /**
     * 根据文件编号查询文件信息
     * @param id
     * @return
     */
    FileInfo getFileInfo(String id);

    /**
     * 获取文件夹树
     * @param fileInfo
     * @return
     */
    List<FileInfo> getFolderTree(FileInfo fileInfo);

    /**
     * 获取文件信息(分页)
     * @param fileInfo
     * @param page
     * @return
     */
    List<FileInfo> getFileInfoPage(FileInfo fileInfo, Page page);

    /**
     * 查询文件夹下的文件信息
     * @param folderId
     * @return
     */
    List<FileInfo> getFileInfoByFolder(String folderId);

    /**
     * 获取文件类型列表,key=类型,value=描述
     * @return
     */
    List<Map<String, String>> getFileTypeList();

    /**
     * 查询文件夹信息
     * @param id 文件夹编号
     * @return
     */
    FileInfo getFolderInfo(String id);

    /**
     * 修改文件信息信息
     * @param fileInfo
     * @return
     */
    int updateFileInfo(FileInfo fileInfo);

    /**
     * 删除文件信息信息
     * @param idsArr 编号数组
     * @return
     */
    int deleteFileInfo(String[] idsArr);

    /**
     * 删除文件夹下的文件信息
     * @param folderId
     * @return
     */
    int deleteFileInfoByFolder(String folderId);

    /**
     * 插入文件信息信息
     * @param fileInfo
     * @return
     */
    int insertFileInfo(FileInfo fileInfo);

    /**
     * 文件数量统计
     * @return
     */
    List<FileStatisticsOnType> statisFileNum(FileInfo fileInfo);

    /**
     * 统计文件夹下的文件数量(文件夹算1个文件)
     * @param folderId
     * @return
     */
    int countFileNumByFolderId(String folderId);

    /**
     * 根据业务编号查询文件信息
     * @param businessCode 业务编号
     * @return
     */
    List<FileInfo> getFileInfoListByBusinessCode(String businessCode);
}
